package com.ykq.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ykq.dao.UserDao;
import com.ykq.entity.User;
import com.ykq.service.UserService;
import com.ykq.util.CommonResult;
import com.ykq.util.JwtUtils;
import com.ykq.vo.UserVo;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


import java.util.List;

/**
 * @program: springboot-vue
 * @description:
 * @author: 闫克起2
 * @create: 2021-12-30 16:52
 **/
@Service("userService")
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    @Override
    public CommonResult findAll(Integer currentPage, Integer pageSize, UserVo userVo) {
        Page<User> page=new Page<>(currentPage,pageSize);
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        if(StringUtils.isNotEmpty(userVo.getUsername())){ //StringUtils这个工具类必须引入commons-lang
            wrapper.like("username",userVo.getUsername());
        }
        if(StringUtils.isNotEmpty(userVo.getRealname())){
            wrapper.like("realname",userVo.getRealname());
        }
        Page<User> users = userDao.selectPage(page,wrapper);

        return new CommonResult(2000,"查询成功",users);
    }

    /**
     * 完成根据账号和密码查询用户信息
     * @param username
     * @param password
     * @return
     */
    @Override
    public CommonResult findByUsernameAndPassword(String username, String password) {
        QueryWrapper<User> wrapper=new QueryWrapper<>();
        wrapper.eq("username",username);
        wrapper.eq("password",password);
        User user = userDao.selectOne(wrapper);
        if(user==null){//账号和密码错误
            return new CommonResult(5000,"账号或密码错误",null);
        }else{
            //把用户信息保存到session? ----->不能保存在session会话中，因为现在前后端分离，前的session和后端的session不在同一个session.
            //能保存在哪? -----> 可以保存数据库或者redis中。
            //------------------>使用jwt.----有序的字符串。
           String token=JwtUtils.createToken(user.getUserId()+"",user.getRealname(),user.getUsername(),user.getRoleid()+"");
           return new CommonResult(2000,"登录成功",token);
        }
    }
}











